include the ledger grammar description
This commit is contained in:
		
							parent
							
								
									34ca154cd9
								
							
						
					
					
						commit
						6ea439cf91
					
				
							
								
								
									
										97
									
								
								hledger.hs
									
									
									
									
									
								
							
							
						
						
									
										97
									
								
								hledger.hs
									
									
									
									
									
								
							| @ -138,6 +138,103 @@ type Account = String | |||||||
| 
 | 
 | ||||||
| -- ledger file parsing | -- ledger file parsing | ||||||
| -- struggling.. easier with a token parser ? | -- struggling.. easier with a token parser ? | ||||||
|  | -- here's the ledger 2.5 grammar: | ||||||
|  | {- | ||||||
|  | "The ledger file format is quite simple, but also very flexible. It supports many options, | ||||||
|  | though typically the user can ignore most of them. They are summarized below. | ||||||
|  | 
 | ||||||
|  |    The initial character of each line determines what the line means, and how it should be | ||||||
|  | interpreted. Allowable initial characters are: | ||||||
|  | 
 | ||||||
|  | NUMBER      A line beginning with a number denotes an entry. It may be followed by any | ||||||
|  |             number of lines, each beginning with whitespace, to denote the entry’s account | ||||||
|  |             transactions. The format of the first line is: | ||||||
|  | 
 | ||||||
|  |                     DATE[=EDATE] [*|!] [(CODE)] DESC | ||||||
|  |             If ‘*’ appears after the date (with optional effective date), it indicates the entry | ||||||
|  |             is “cleared”, which can mean whatever the user wants it t omean. If ‘!’ appears | ||||||
|  |             after the date, it indicates d the entry is “pending”; i.e., tentatively cleared from | ||||||
|  |             the user’s point of view, but not yet actually cleared. If a ‘CODE’ appears in | ||||||
|  |             parentheses, it may be used to indicate a check number, or the type of the | ||||||
|  |             transaction. Following these is the payee, or a description of the transaction. | ||||||
|  |             The format of each following transaction is: | ||||||
|  | 
 | ||||||
|  |                       ACCOUNT     AMOUNT    [; NOTE] | ||||||
|  | 
 | ||||||
|  |             The ‘ACCOUNT’ may be surrounded by parentheses if it is a virtual | ||||||
|  |             transactions, or square brackets if it is a virtual transactions that must | ||||||
|  |             balance. The ‘AMOUNT’ can be followed by a per-unit transaction cost, | ||||||
|  |             by specifying ‘ AMOUNT’, or a complete transaction cost with ‘@ AMOUNT’. | ||||||
|  |             Lastly, the ‘NOTE’ may specify an actual and/or effective date for the | ||||||
|  |             transaction by using the syntax ‘[ACTUAL_DATE]’ or ‘[=EFFECTIVE_DATE]’ or | ||||||
|  |             ‘[ACTUAL_DATE=EFFECtIVE_DATE]’. | ||||||
|  | 
 | ||||||
|  | =           An automated entry. A value expression must appear after the equal sign. | ||||||
|  |             After this initial line there should be a set of one or more transactions, just as | ||||||
|  |             if it were normal entry. If the amounts of the transactions have no commodity, | ||||||
|  |             they will be applied as modifiers to whichever real transaction is matched by | ||||||
|  |             the value expression. | ||||||
|  |   | ||||||
|  | ~           A period entry. A period expression must appear after the tilde. | ||||||
|  |             After this initial line there should be a set of one or more transactions, just as | ||||||
|  |             if it were normal entry. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | !           A line beginning with an exclamation mark denotes a command directive. It | ||||||
|  |             must be immediately followed by the command word. The supported commands | ||||||
|  |             are: | ||||||
|  | 
 | ||||||
|  |            ‘!include’ | ||||||
|  |                         Include the stated ledger file. | ||||||
|  |            ‘!account’ | ||||||
|  |                         The account name is given is taken to be the parent of all transac- | ||||||
|  |                         tions that follow, until ‘!end’ is seen. | ||||||
|  |            ‘!end’       Ends an account block. | ||||||
|  |   | ||||||
|  | ;          A line beginning with a colon indicates a comment, and is ignored. | ||||||
|  |   | ||||||
|  | Y          If a line begins with a capital Y, it denotes the year used for all subsequent | ||||||
|  |            entries that give a date without a year. The year should appear immediately | ||||||
|  |            after the Y, for example: ‘Y2004’. This is useful at the beginning of a file, to | ||||||
|  |            specify the year for that file. If all entries specify a year, however, this command | ||||||
|  |            has no effect. | ||||||
|  |             | ||||||
|  |   | ||||||
|  | P          Specifies a historical price for a commodity. These are usually found in a pricing | ||||||
|  |            history file (see the ‘-Q’ option). The syntax is: | ||||||
|  | 
 | ||||||
|  |                   P DATE SYMBOL PRICE | ||||||
|  | 
 | ||||||
|  | N SYMBOL   Indicates that pricing information is to be ignored for a given symbol, nor will | ||||||
|  |            quotes ever be downloaded for that symbol. Useful with a home currency, such | ||||||
|  |            as the dollar ($). It is recommended that these pricing options be set in the price | ||||||
|  |            database file, which defaults to ‘~/.pricedb’. The syntax for this command is: | ||||||
|  | 
 | ||||||
|  |                   N SYMBOL | ||||||
|  | 
 | ||||||
|  |          | ||||||
|  | D AMOUNT   Specifies the default commodity to use, by specifying an amount in the expected | ||||||
|  |            format. The entry command will use this commodity as the default when none | ||||||
|  |            other can be determined. This command may be used multiple times, to set | ||||||
|  |            the default flags for different commodities; whichever is seen last is used as the | ||||||
|  |            default commodity. For example, to set US dollars as the default commodity, | ||||||
|  |            while also setting the thousands flag and decimal flag for that commodity, use: | ||||||
|  | 
 | ||||||
|  |                   D $1,000.00 | ||||||
|  | 
 | ||||||
|  | C AMOUNT1 = AMOUNT2 | ||||||
|  |            Specifies a commodity conversion, where the first amount is given to be equiv- | ||||||
|  |            alent to the second amount. The first amount should use the decimal precision | ||||||
|  |            desired during reporting: | ||||||
|  | 
 | ||||||
|  |                   C 1.00 Kb = 1024 bytes | ||||||
|  | 
 | ||||||
|  | i, o, b, h | ||||||
|  |            These four relate to timeclock support, which permits ledger to read timelog | ||||||
|  |            files. See the timeclock’s documentation for more info on the syntax of its | ||||||
|  |            timelog files." | ||||||
|  | -} | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ledgerLanguageDef = LanguageDef { | ledgerLanguageDef = LanguageDef { | ||||||
|    commentStart   = "" |    commentStart   = "" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user