F diff --git a/src/frontend/lex/lexer.c b/src/frontend/lex/lexer.c --- a/src/frontend/lex/lexer.c +++ b/src/frontend/lex/lexer.creturn 0;}}+ /*+ Counting lines is hard =(+ */enum Source_Chars lexer_get_ch_accounting_for_linesplices(struct Program *program,const char *src,size_t src_size,size_t *where_in_src,size_t *which_line,size_t *which_column){enum {ch=get_ch(src+*where_in_src,src_size-*where_in_src);switch(state){+case UNKNOWN_CHAR:if(ch==CHAR_BACKWARD_SLASH){++*which_line;}else{+ wonky_assert(*which_column!=0);+ wonky_assert(*where_in_src!=0);++ /*rollback progression of cursor*/+ --*where_in_src;+ --*which_column;+ /*there was no progression of line cursor because+ previous ch was a backward slash*/++ ch=CHAR_BACKWARD_SLASH;state=KNOWN_CHAR;}break;F diff --git a/src/semantics/value/constant.h b/src/semantics/value/constant.h --- a/src/semantics/value/constant.h +++ b/src/semantics/value/constant.hstruct Constant{struct Type *type;+ /*bytes of the thingy. size can derived from .type*/void *value;};F diff --git a/src/syntax/automatas/generator/generator.c b/src/syntax/automatas/generator/generator.c --- a/src/syntax/automatas/generator/generator.c +++ b/src/syntax/automatas/generator/generator.c{struct Generator_Node *inner_string_node;struct Generator_Node *ending_string_node;+ struct Generator_Node *escape_string_node;struct Generator_Node *inner_char_node;struct Generator_Node *ending_char_node;+ struct Generator_Node *escape_char_node;+inner_string_node=get_generator_node(null_str,no_type_str,no_type_str,automata_no_action_str);+ escape_string_node=get_generator_node(null_str,no_type_str,no_type_str,automata_no_action_str);ending_string_node=get_generator_node(null_str,str_kw,str_kw,automata_dispense_token_str);inner_char_node=get_generator_node(null_str,no_type_str,no_type_str,automata_no_action_str);+ escape_char_node=get_generator_node(null_str,no_type_str,no_type_str,automata_no_action_str);ending_char_node=get_generator_node(null_str,char_kw,char_kw,automata_dispense_token_str);connect_node(node,inner_char_node,NULL,CHAR_SINGLE_QUOTE,CHAR_SINGLE_QUOTE,0);connect_node(inner_char_node,ending_char_node,NULL,CHAR_SINGLE_QUOTE,CHAR_SINGLE_QUOTE,0);- connect_node(inner_char_node,inner_char_node,NULL,0,CHAR_FORM_FEED_TAB-1,0);+ connect_node(inner_char_node,inner_char_node,NULL,0,CHAR_BACKWARD_SLASH-2,0);+ connect_node(inner_char_node,inner_char_node,NULL,CHAR_BACKWARD_SLASH+1,CHAR_FORM_FEED_TAB-1,0);connect_node(inner_char_node,inner_char_node,NULL,CHAR_FORM_FEED_TAB+1,CHAR_ENUM_END,0);+ connect_node(inner_char_node,escape_char_node,NULL,CHAR_BACKWARD_SLASH,CHAR_BACKWARD_SLASH,0);+ connect_node(escape_char_node,inner_char_node,NULL,0,CHAR_SPACE-1,0);+connect_node(node,inner_string_node,NULL,CHAR_DOUBLE_QUOTE,CHAR_DOUBLE_QUOTE,0);connect_node(inner_string_node,ending_string_node,NULL,CHAR_DOUBLE_QUOTE,CHAR_DOUBLE_QUOTE,0);- connect_node(inner_string_node,inner_string_node,NULL,0,CHAR_FORM_FEED_TAB-1,0);+ connect_node(inner_string_node,inner_string_node,NULL,0,CHAR_BACKWARD_SLASH-1,0);+ connect_node(inner_string_node,inner_string_node,NULL,CHAR_BACKWARD_SLASH+1,CHAR_FORM_FEED_TAB-1,0);connect_node(inner_string_node,inner_string_node,NULL,CHAR_FORM_FEED_TAB+1,CHAR_ENUM_END,0);+ connect_node(inner_string_node,escape_string_node,NULL,CHAR_BACKWARD_SLASH,CHAR_BACKWARD_SLASH,0);+ connect_node(escape_string_node,inner_string_node,NULL,0,CHAR_SPACE-1,0);}void add_finishing_float_nodes(struct Generator_Node *node,_Bool has_read_digits){